﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class Extensions
   </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class Extensions
   ">
    <meta name="generator" content="docfx 2.47.0.0">
    
    <link rel="shortcut icon" href="favicon.ico">
    <link rel="stylesheet" href="styles/docfx.vendor.css">
    <link rel="stylesheet" href="styles/docfx.css">
    <link rel="stylesheet" href="styles/main.css">
    <meta property="docfx:navrel" content="toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="index.html">
                <img id="logo" class="svg" src="logo.svg" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div role="main" class="container body-content hide-when-search">
        <div class="article row grid">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Open.ChannelExtensions.Extensions">
  
  
  <h1 id="Open_ChannelExtensions_Extensions" data-uid="Open.ChannelExtensions.Extensions" class="text-break">Class Extensions
  </h1>
  <div class="markdown level0 summary"><p>Extensions for operating with System.Threading.Channels.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><span class="xref">System.Object</span></div>
    <div class="level1"><span class="xref">Extensions</span></div>
  </div>
  <div class="inheritedMembers">
    <h5>Inherited Members</h5>
    <div>
      <span class="xref">System.Object.Equals(System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.Equals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.GetHashCode()</span>
    </div>
    <div>
      <span class="xref">System.Object.GetType()</span>
    </div>
    <div>
      <span class="xref">System.Object.MemberwiseClone()</span>
    </div>
    <div>
      <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.ToString()</span>
    </div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Open.ChannelExtensions.html">Open.ChannelExtensions</a></h6>
  <h6><strong>Assembly</strong>: Open.ChannelExtensions.dll</h6>
  <h5 id="Open_ChannelExtensions_Extensions_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static class Extensions</code></pre>
  </div>
  <h3 id="methods">Methods
  </h3>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_AsAsyncEnumerable__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.AsAsyncEnumerable%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L285">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_AsAsyncEnumerable_" data-uid="Open.ChannelExtensions.Extensions.AsAsyncEnumerable*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_AsAsyncEnumerable__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.AsAsyncEnumerable``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken)">AsAsyncEnumerable&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Iterates over the results in a ChannelReader.
Provided as an alternative to .ReadAllAsync() which at the time of publishing this, only exists in .NET Core 3.0 and not .NET Standard 2.1</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IAsyncEnumerable&lt;T&gt; AsAsyncEnumerable&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token that will break out of the iteration.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><p>An IAsyncEnumerable for iterating the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_AsAsyncEnumerable__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.AsAsyncEnumerable%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L309">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_AsAsyncEnumerable_" data-uid="Open.ChannelExtensions.Extensions.AsAsyncEnumerable*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_AsAsyncEnumerable__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.AsAsyncEnumerable``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken)">AsAsyncEnumerable&lt;TIn, TOut&gt;(Channel&lt;TIn, TOut&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Iterates over the results in a Channel.
Provided as an alternative to .ReadAllAsync() which at the time of publishing this, only exists in .NET Core 3.0 and not .NET Standard 2.1</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IAsyncEnumerable&lt;TOut&gt; AsAsyncEnumerable&lt;TIn, TOut&gt;(this Channel&lt;TIn, TOut&gt; channel, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TIn, TOut&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token that will break out of the iteration.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;TOut&gt;</td>
        <td><p>An IAsyncEnumerable for iterating the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type recieved by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the source channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Batch__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Boolean_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Batch%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Batch.cs/#L74">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Batch_" data-uid="Open.ChannelExtensions.Extensions.Batch*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Batch__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Boolean_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Batch``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Boolean,System.Boolean)">Batch&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, Boolean, Boolean)</h4>
  <div class="markdown level1 summary"><p>Batches results into the batch size provided with a max capacity of batches.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;List&lt;T&gt;&gt; Batch&lt;T&gt;(this ChannelReader&lt;T&gt; source, int batchSize, bool singleReader = false, bool allowSynchronousContinuations = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">batchSize</span></td>
        <td><p>The maximum size of each batch.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">allowSynchronousContinuations</span></td>
        <td><p>True can reduce the amount of scheduling and markedly improve performance, but may produce unexpected or even undesirable behavior.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.List</span>&lt;T&gt;&gt;</td>
        <td><p>A channel reader containing the batches.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The output type of the source channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_CompleteAsync__2_System_Threading_Channels_Channel___0___1__System_Exception_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.CompleteAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Exception)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L135">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_CompleteAsync_" data-uid="Open.ChannelExtensions.Extensions.CompleteAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_CompleteAsync__2_System_Threading_Channels_Channel___0___1__System_Exception_" data-uid="Open.ChannelExtensions.Extensions.CompleteAsync``2(System.Threading.Channels.Channel{``0,``1},System.Exception)">CompleteAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Exception)</h4>
  <div class="markdown level1 summary"><p>Calls complete on the writer and returns the completion from the reader.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task CompleteAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Exception exception = null)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to complete asynchronously.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">exception</span></td>
        <td><p>The optional exception to include with completion.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span></td>
        <td><p>The reader's completion task.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being received by the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type being read from the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Filter__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Boolean__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Filter%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Boolean%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Filter.cs/#L47">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Filter_" data-uid="Open.ChannelExtensions.Extensions.Filter*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Filter__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Boolean__" data-uid="Open.ChannelExtensions.Extensions.Filter``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Boolean})">Filter&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, Boolean&gt;)</h4>
  <div class="markdown level1 summary"><p>Produces a reader that only contains results that pass the predicate condition.  Ones that fail the predicate are discarded.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Filter&lt;T&gt;(this ChannelReader&lt;T&gt; source, Func&lt;T, bool&gt; predicate)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Boolean</span>&gt;</td>
        <td><span class="parametername">predicate</span></td>
        <td><p>The predicate function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader representing the filtered results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader___0____System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7B%60%600%5B%5D%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L86">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader___0____System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{``0[]},System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;T[]&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;T[]&gt; source, bool singleReader = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T[]&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IAsyncEnumerable___0___System_Boolean_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7BSystem.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L98">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IAsyncEnumerable___0___System_Boolean_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{System.Collections.Generic.IAsyncEnumerable{``0}},System.Boolean,System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;IAsyncEnumerable&lt;T&gt;&gt;, Boolean, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;IAsyncEnumerable&lt;T&gt;&gt; source, bool singleReader = false, bool allowSynchronousContinuations = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">allowSynchronousContinuations</span></td>
        <td><p>True can reduce the amount of scheduling and markedly improve performance, but may produce unexpected or even undesirable behavior.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_ICollection___0___System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7BSystem.Collections.Generic.ICollection%7B%60%600%7D%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L56">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_ICollection___0___System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{System.Collections.Generic.ICollection{``0}},System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;ICollection&lt;T&gt;&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;ICollection&lt;T&gt;&gt; source, bool singleReader = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.ICollection</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IEnumerable___0___System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7BSystem.Collections.Generic.IEnumerable%7B%60%600%7D%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L46">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IEnumerable___0___System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{System.Collections.Generic.IEnumerable{``0}},System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;IEnumerable&lt;T&gt;&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;IEnumerable&lt;T&gt;&gt; source, bool singleReader = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IList___0___System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7BSystem.Collections.Generic.IList%7B%60%600%7D%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L66">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_IList___0___System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{System.Collections.Generic.IList{``0}},System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;IList&lt;T&gt;&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;IList&lt;T&gt;&gt; source, bool singleReader = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.IList</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_List___0___System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Join%60%601(System.Threading.Channels.ChannelReader%7BSystem.Collections.Generic.List%7B%60%600%7D%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Join.cs/#L76">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Join_" data-uid="Open.ChannelExtensions.Extensions.Join*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Join__1_System_Threading_Channels_ChannelReader_System_Collections_Generic_List___0___System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.Join``1(System.Threading.Channels.ChannelReader{System.Collections.Generic.List{``0}},System.Boolean)">Join&lt;T&gt;(ChannelReader&lt;List&lt;T&gt;&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Joins collections of the same type into a single channel reader in the order provided.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Join&lt;T&gt;(this ChannelReader&lt;List&lt;T&gt;&gt; source, bool singleReader = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.Collections.Generic.List</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader containing the joined results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The result type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_OfType__2_System_Threading_Channels_ChannelReader___0__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.OfType%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.TypeFilter.cs/#L48">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_OfType_" data-uid="Open.ChannelExtensions.Extensions.OfType*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_OfType__2_System_Threading_Channels_ChannelReader___0__" data-uid="Open.ChannelExtensions.Extensions.OfType``2(System.Threading.Channels.ChannelReader{``0})">OfType&lt;TSource, T&gt;(ChannelReader&lt;TSource&gt;)</h4>
  <div class="markdown level1 summary"><p>Produces a reader that only contains results of a specific type.  Others are discarded.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; OfType&lt;TSource, T&gt;(this ChannelReader&lt;TSource&gt; source)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TSource&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>A channel reader representing the filtered results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TSource</span></td>
        <td><p>The source item type.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The desired item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Pipe__2_System_Threading_Channels_ChannelReader___0__System_Func___0___1__System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Pipe%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L304">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Pipe_" data-uid="Open.ChannelExtensions.Extensions.Pipe*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Pipe__2_System_Threading_Channels_ChannelReader___0__System_Func___0___1__System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Pipe``2(System.Threading.Channels.ChannelReader{``0},System.Func{``0,``1},System.Int32,System.Boolean,System.Threading.CancellationToken)">Pipe&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Func&lt;TIn, TOut&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; Pipe&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, Func&lt;TIn, TOut&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, TOut&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Pipe__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0___1__System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Pipe%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Func%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L189">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Pipe_" data-uid="Open.ChannelExtensions.Extensions.Pipe*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Pipe__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0___1__System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Pipe``2(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Func{``0,``1},System.Int32,System.Boolean,System.Threading.CancellationToken)">Pipe&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Int32, Func&lt;TIn, TOut&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; Pipe&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, int maxConcurrency, Func&lt;TIn, TOut&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, TOut&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Pipe__3_System_Threading_Channels_Channel___0___1__System_Func___1___2__System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Pipe%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2C%60%602%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L321">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Pipe_" data-uid="Open.ChannelExtensions.Extensions.Pipe*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Pipe__3_System_Threading_Channels_Channel___0___1__System_Func___1___2__System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Pipe``3(System.Threading.Channels.Channel{``0,``1},System.Func{``1,``2},System.Int32,System.Boolean,System.Threading.CancellationToken)">Pipe&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, TOut&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; Pipe&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, Func&lt;TRead, TOut&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, TOut&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Pipe__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1___2__System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Pipe%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Func%7B%60%601%2C%60%602%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L207">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Pipe_" data-uid="Open.ChannelExtensions.Extensions.Pipe*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Pipe__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1___2__System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Pipe``3(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Func{``1,``2},System.Int32,System.Boolean,System.Threading.CancellationToken)">Pipe&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Func&lt;TRead, TOut&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; Pipe&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, int maxConcurrency, Func&lt;TRead, TOut&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, TOut&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask___1___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeAsync%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7B%60%601%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L228">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeAsync_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask___1___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync``2(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.ValueTask{``1}},System.Int32,System.Boolean,System.Threading.CancellationToken)">PipeAsync&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Func&lt;TIn, ValueTask&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; PipeAsync&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, Func&lt;TIn, ValueTask&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, <span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_ValueTask___1___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeAsync%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7B%60%601%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L85">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeAsync_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_ValueTask___1___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync``2(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Func{``0,System.Threading.Tasks.ValueTask{``1}},System.Int32,System.Boolean,System.Threading.CancellationToken)">PipeAsync&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Int32, Func&lt;TIn, ValueTask&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries concurrently and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; PipeAsync&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, int maxConcurrency, Func&lt;TIn, ValueTask&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, <span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeAsync__3_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask___2___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeAsync%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7B%60%602%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L245">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeAsync_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeAsync__3_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask___2___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync``3(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.ValueTask{``2}},System.Int32,System.Boolean,System.Threading.CancellationToken)">PipeAsync&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, ValueTask&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; PipeAsync&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, Func&lt;TRead, ValueTask&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeAsync__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_ValueTask___2___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeAsync%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7B%60%602%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L127">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeAsync_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeAsync__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_ValueTask___2___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeAsync``3(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Func{``1,System.Threading.Tasks.ValueTask{``2}},System.Int32,System.Boolean,System.Threading.CancellationToken)">PipeAsync&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Func&lt;TRead, ValueTask&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; PipeAsync&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, int maxConcurrency, Func&lt;TRead, ValueTask&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeTo__1_System_Threading_Channels_ChannelReader___0__System_Threading_Channels_Channel___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeTo%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.Channels.Channel%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L60">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeTo_" data-uid="Open.ChannelExtensions.Extensions.PipeTo*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeTo__1_System_Threading_Channels_ChannelReader___0__System_Threading_Channels_Channel___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeTo``1(System.Threading.Channels.ChannelReader{``0},System.Threading.Channels.Channel{``0},System.Threading.CancellationToken)">PipeTo&lt;T&gt;(ChannelReader&lt;T&gt;, Channel&lt;T&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries from the source channel and writes them to the target.  Will call complete when finished and propagates any errors to the channel.
This is useful for managing different buffers sizes, especially if the source reader comes from a .Transform function.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; PipeTo&lt;T&gt;(this ChannelReader&lt;T&gt; source, Channel&lt;T&gt; target, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The target channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader of the target.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type contained by the source channel and written to the target..</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_PipeTo__1_System_Threading_Channels_ChannelReader___0__System_Threading_Channels_ChannelWriter___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.PipeTo%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L22">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_PipeTo_" data-uid="Open.ChannelExtensions.Extensions.PipeTo*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_PipeTo__1_System_Threading_Channels_ChannelReader___0__System_Threading_Channels_ChannelWriter___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.PipeTo``1(System.Threading.Channels.ChannelReader{``0},System.Threading.Channels.ChannelWriter{``0},System.Boolean,System.Threading.CancellationToken)">PipeTo&lt;T&gt;(ChannelReader&lt;T&gt;, ChannelWriter&lt;T&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries from the source channel and writes them to the target.
This is useful for managing different buffers sizes, especially if the source reader comes from a .Transform function.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; PipeTo&lt;T&gt;(this ChannelReader&lt;T&gt; source, ChannelWriter&lt;T&gt; target, bool complete, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The target channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>Indicates to call complete on the target when the source is complete.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type contained by the source channel and written to the target..</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0_System_Int64__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Action%7B%60%600%2CSystem.Int64%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L647">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0_System_Int64__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Action{``0,System.Int64},System.Boolean,System.Threading.CancellationToken)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, Action&lt;T, Int64&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Action&lt;T, long&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writreadinging.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0_System_Int64__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Action%7B%60%600%2CSystem.Int64%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L676">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0_System_Int64__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Action{``0,System.Int64},System.Threading.CancellationToken,System.Boolean)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, Action&lt;T, Int64&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Action&lt;T, long&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writreadinging.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Action%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L767">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Action{``0},System.Boolean,System.Threading.CancellationToken)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, Action&lt;T&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Action&lt;T&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Action%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L795">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Action___0__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Action{``0},System.Threading.CancellationToken,System.Boolean)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, Action&lt;T&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Action&lt;T&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0_System_Int64__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%600%2CSystem.Int64%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L692">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0_System_Int64__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Action{``0,System.Int64},System.Boolean)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Action&lt;T, Int64&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Action&lt;T, long&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writreadinging.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%600%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L811">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Action{``0},System.Boolean)">ReadAll&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Action&lt;T&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Action&lt;T&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1_System_Int64__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Action%7B%60%601%2CSystem.Int64%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L710">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1_System_Int64__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Action{``1,System.Int64},System.Boolean,System.Threading.CancellationToken)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Action&lt;TRead, Int64&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Action&lt;TRead, long&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1_System_Int64__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Action%7B%60%601%2CSystem.Int64%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L733">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1_System_Int64__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Action{``1,System.Int64},System.Threading.CancellationToken,System.Boolean)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Action&lt;TRead, Int64&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Action&lt;TRead, long&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Action%7B%60%601%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L829">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Action{``1},System.Boolean,System.Threading.CancellationToken)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Action&lt;TRead&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Action&lt;TRead&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Action%7B%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L851">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Action{``1},System.Threading.CancellationToken,System.Boolean)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Action&lt;TRead&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Action&lt;TRead&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1_System_Int64__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%601%2CSystem.Int64%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L750">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1_System_Int64__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Action{``1,System.Int64},System.Boolean)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Action&lt;TRead, Int64&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Action&lt;TRead, long&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAll%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%601%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L868">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAll_" data-uid="Open.ChannelExtensions.Extensions.ReadAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAll__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAll``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Action{``1},System.Boolean)">ReadAll&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Action&lt;TRead&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAll&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Action&lt;TRead&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsLines_System_Threading_Channels_ChannelReader_System_String__System_IO_TextWriter_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsLines(System.Threading.Channels.ChannelReader%7BSystem.String%7D%2CSystem.IO.TextWriter%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L884">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsLines_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsLines_System_Threading_Channels_ChannelReader_System_String__System_IO_TextWriter_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines(System.Threading.Channels.ChannelReader{System.String},System.IO.TextWriter,System.Boolean,System.Threading.CancellationToken)">ReadAllAsLines(ChannelReader&lt;String&gt;, TextWriter, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and writes to the target writer.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsLines(this ChannelReader&lt;string&gt; reader, TextWriter receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextWriter</span></td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsLines_System_Threading_Channels_ChannelReader_System_String__System_IO_TextWriter_System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsLines(System.Threading.Channels.ChannelReader%7BSystem.String%7D%2CSystem.IO.TextWriter%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L899">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsLines_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsLines_System_Threading_Channels_ChannelReader_System_String__System_IO_TextWriter_System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines(System.Threading.Channels.ChannelReader{System.String},System.IO.TextWriter,System.Threading.CancellationToken,System.Boolean)">ReadAllAsLines(ChannelReader&lt;String&gt;, TextWriter, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and writes to the target writer.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsLines(this ChannelReader&lt;string&gt; reader, TextWriter receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextWriter</span></td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsLines__1_System_Threading_Channels_Channel___0_System_String__System_IO_TextWriter_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsLines%60%601(System.Threading.Channels.Channel%7B%60%600%2CSystem.String%7D%2CSystem.IO.TextWriter%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L915">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsLines_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsLines__1_System_Threading_Channels_Channel___0_System_String__System_IO_TextWriter_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines``1(System.Threading.Channels.Channel{``0,System.String},System.IO.TextWriter,System.Boolean,System.Threading.CancellationToken)">ReadAllAsLines&lt;T&gt;(Channel&lt;T, String&gt;, TextWriter, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and writes to the target writer.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsLines&lt;T&gt;(this Channel&lt;T, string&gt; channel, TextWriter receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;T, <span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextWriter</span></td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The TextWriter to recieve the lines.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsLines__1_System_Threading_Channels_Channel___0_System_String__System_IO_TextWriter_System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsLines%60%601(System.Threading.Channels.Channel%7B%60%600%2CSystem.String%7D%2CSystem.IO.TextWriter%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L936">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsLines_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsLines__1_System_Threading_Channels_Channel___0_System_String__System_IO_TextWriter_System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsLines``1(System.Threading.Channels.Channel{``0,System.String},System.IO.TextWriter,System.Threading.CancellationToken,System.Boolean)">ReadAllAsLines&lt;T&gt;(Channel&lt;T, String&gt;, TextWriter, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and writes to the target writer.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsLines&lt;T&gt;(this Channel&lt;T, string&gt; channel, TextWriter receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;T, <span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextWriter</span></td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The TextWriter to recieve the lines.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L277">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean,System.Threading.CancellationToken)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, Int64, ValueTask&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, long, ValueTask&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L297">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Int64,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken,System.Boolean)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, Int64, ValueTask&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, long, ValueTask&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L439">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.ValueTask},System.Boolean,System.Threading.CancellationToken)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, ValueTask&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, ValueTask&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L455">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken,System.Boolean)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, ValueTask&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, ValueTask&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L313">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Func{``0,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Func&lt;T, Int64, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Func&lt;T, long, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L471">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Func{``0,System.Threading.Tasks.ValueTask},System.Boolean)">ReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Func&lt;T, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Func&lt;T, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L331">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean,System.Threading.CancellationToken)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Int64, ValueTask&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, long, ValueTask&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L353">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Int64,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken,System.Boolean)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Int64, ValueTask&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, long, ValueTask&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L590">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.ValueTask},System.Boolean,System.Threading.CancellationToken)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, ValueTask&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, ValueTask&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L613">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken,System.Boolean)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, ValueTask&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, ValueTask&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L370">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, Int64, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, long, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L630">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Threading.Tasks.ValueTask},System.Boolean)">ReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrently__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Action___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrently%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Action%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L151">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrently_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrently__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Action___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Action{``0},System.Threading.CancellationToken)">ReadAllConcurrently&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, Action&lt;T&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrently&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int maxConcurrency, Action&lt;T&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrently__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_System_Action___0__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrently%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%600%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L172">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrently_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrently__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_System_Action___0__" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Threading.CancellationToken,System.Action{``0})">ReadAllConcurrently&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, CancellationToken, Action&lt;T&gt;)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrently&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int maxConcurrency, CancellationToken cancellationToken, Action&lt;T&gt; receiver)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrently__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Action___1__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrently%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Action%7B%60%601%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L189">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrently_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrently__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Action___1__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Action{``1},System.Threading.CancellationToken)">ReadAllConcurrently&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Action&lt;TRead&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrently&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, int maxConcurrency, Action&lt;TRead&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrently__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Threading_CancellationToken_System_Action___1__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrently%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%601%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L210">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrently_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrently__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Threading_CancellationToken_System_Action___1__" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrently``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Threading.CancellationToken,System.Action{``1})">ReadAllConcurrently&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, CancellationToken, Action&lt;TRead&gt;)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrently&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, int maxConcurrency, CancellationToken cancellationToken, Action&lt;TRead&gt; receiver)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L21">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Func{``0,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken)">ReadAllConcurrentlyAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, Func&lt;T, ValueTask&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrentlyAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int maxConcurrency, Func&lt;T, ValueTask&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L61">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Threading.CancellationToken,System.Func{``0,System.Threading.Tasks.ValueTask})">ReadAllConcurrentlyAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, CancellationToken, Func&lt;T, ValueTask&gt;)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrentlyAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int maxConcurrency, CancellationToken cancellationToken, Func&lt;T, ValueTask&gt; receiver)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L93">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_ValueTask__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Func{``1,System.Threading.Tasks.ValueTask},System.Threading.CancellationToken)">ReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Func&lt;TRead, ValueTask&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, int maxConcurrency, Func&lt;TRead, ValueTask&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L114">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__" data-uid="Open.ChannelExtensions.Extensions.ReadAllConcurrentlyAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Threading.CancellationToken,System.Func{``1,System.Threading.Tasks.ValueTask})">ReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, CancellationToken, Func&lt;TRead, ValueTask&gt;)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; ReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, int maxConcurrency, CancellationToken cancellationToken, Func&lt;TRead, ValueTask&gt; receiver)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadAvailable__1_System_Threading_Channels_ChannelReader___0__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadAvailable%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L21">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadAvailable_" data-uid="Open.ChannelExtensions.Extensions.ReadAvailable*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadAvailable__1_System_Threading_Channels_ChannelReader___0__" data-uid="Open.ChannelExtensions.Extensions.ReadAvailable``1(System.Threading.Channels.ChannelReader{``0})">ReadAvailable&lt;T&gt;(ChannelReader&lt;T&gt;)</h4>
  <div class="markdown level1 summary"><p>Creates an enumerable that will read from the channel until no more are available for read.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IEnumerable&lt;T&gt; ReadAvailable&lt;T&gt;(this ChannelReader&lt;T&gt; reader)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><p>An enumerable that will read from the channel until no more are available for read</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadBatchAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadBatchAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L38">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadBatchAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadBatchAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadBatchAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ReadBatchAsync``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Threading.CancellationToken)">ReadBatchAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads from the channel up to the max count.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;List&lt;T&gt;&gt; ReadBatchAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int max, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">max</span></td>
        <td><p>The max size of the batch.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Collections.Generic.List</span>&lt;T&gt;&gt;</td>
        <td><p>The batch requested.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelled__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0_System_Int64__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelled%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%600%2CSystem.Int64%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L183">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelled_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelled__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0_System_Int64__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Action{``0,System.Int64},System.Boolean)">ReadUntilCancelled&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Action&lt;T, Int64&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelled&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Action&lt;T, long&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelled__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelled%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%600%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L231">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelled_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelled__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Action___0__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Action{``0},System.Boolean)">ReadUntilCancelled&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Action&lt;T&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelled&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Action&lt;T&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;T&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelled__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelled%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Action%7B%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L256">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelled_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelled__2_System_Threading_Channels_Channel___0___1__System_Action___1__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled``2(System.Threading.Channels.Channel{``0,``1},System.Action{``1},System.Threading.CancellationToken,System.Boolean)">ReadUntilCancelled&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Action&lt;TRead&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelled&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Action&lt;TRead&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelled__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1_System_Int64__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelled%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Action%7B%60%601%2CSystem.Int64%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L209">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelled_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelled__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Action___1_System_Int64__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelled``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Action{``1,System.Int64},System.Boolean)">ReadUntilCancelled&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Action&lt;TRead, Int64&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelled&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Action&lt;TRead, long&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Action</span>&lt;TRead, <span class="xref">System.Int64</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L77">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Func{``0,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean)">ReadUntilCancelledAsync&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Func&lt;T, Int64, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelledAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Func&lt;T, long, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L143">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Func{``0,System.Threading.Tasks.ValueTask},System.Boolean)">ReadUntilCancelledAsync&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Func&lt;T, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelledAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Func&lt;T, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L121">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Int64,System.Threading.Tasks.ValueTask},System.Boolean)">ReadUntilCancelledAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, Int64, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelledAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, long, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.ValueTask%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L161">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ReadUntilCancelledAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_ValueTask__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ReadUntilCancelledAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Threading.Tasks.ValueTask},System.Boolean)">ReadUntilCancelledAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, ValueTask&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; ReadUntilCancelledAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, ValueTask&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.ValueTask</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__1_System_Threading_Channels_Channel_System_String___0__System_IO_TextReader_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%601(System.Threading.Channels.Channel%7BSystem.String%2C%60%600%7D%2CSystem.IO.TextReader%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L233">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__1_System_Threading_Channels_Channel_System_String___0__System_IO_TextReader_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``1(System.Threading.Channels.Channel{System.String,``0},System.IO.TextReader,System.Boolean,System.Threading.CancellationToken)">Source&lt;T&gt;(Channel&lt;String, T&gt;, TextReader, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Source&lt;T&gt;(this Channel&lt;string, T&gt; target, TextReader source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;<span class="xref">System.String</span>, T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__1_System_Threading_Channels_Channel_System_String___0__System_IO_TextReader_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%601(System.Threading.Channels.Channel%7BSystem.String%2C%60%600%7D%2CSystem.IO.TextReader%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L254">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__1_System_Threading_Channels_Channel_System_String___0__System_IO_TextReader_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``1(System.Threading.Channels.Channel{System.String,``0},System.IO.TextReader,System.Threading.CancellationToken)">Source&lt;T&gt;(Channel&lt;String, T&gt;, TextReader, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; Source&lt;T&gt;(this Channel&lt;string, T&gt; target, TextReader source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;<span class="xref">System.String</span>, T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L269">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean,System.Threading.CancellationToken)">Source&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IAsyncEnumerable&lt;TWrite&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Executes all entries from the source and passes their result to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; Source&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IAsyncEnumerable&lt;TWrite&gt; source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;TWrite&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IAsyncEnumerable___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L291">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IAsyncEnumerable___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.CancellationToken)">Source&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IAsyncEnumerable&lt;TWrite&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Executes all entries from the source and passes their result to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; Source&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IAsyncEnumerable&lt;TWrite&gt; source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;TWrite&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L125">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{``0},System.Boolean,System.Threading.CancellationToken)">Source&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;TWrite&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; Source&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;TWrite&gt; source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;TWrite&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Source%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L145">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Source_" data-uid="Open.ChannelExtensions.Extensions.Source*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Source__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.Source``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{``0},System.Threading.CancellationToken)">Source&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;TWrite&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; Source&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;TWrite&gt; source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;TWrite&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L23">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Func{``0}},System.Boolean,System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;Func&lt;TWrite&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Executes all entries from the source and passes their result to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;Func&lt;TWrite&gt;&gt; source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L43">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Func{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;Func&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Executes all entries from the source and passes their result to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;Func&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L91">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Boolean,System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;Task&lt;TWrite&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;Task&lt;TWrite&gt;&gt; source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L111">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;Task&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;Task&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L57">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Boolean,System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt; source, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L77">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L159">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Collections.Generic.IEnumerable{System.Func{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, IEnumerable&lt;Func&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Executes all entries from the source and passes their result to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, int maxConcurrency, IEnumerable&lt;Func&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L208">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, IEnumerable&lt;Task&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, int maxConcurrency, IEnumerable&lt;Task&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.SourceAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Source.cs/#L182">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_SourceAsync_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_SourceAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.SourceAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Threading.CancellationToken)">SourceAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to the channel.  Calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TRead&gt; SourceAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; target, int maxConcurrency, IEnumerable&lt;ValueTask&lt;TWrite&gt;&gt; source, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;TWrite&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TRead&gt;</td>
        <td><p>The channel reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The output type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskPipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task___1___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskPipeAsync%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7B%60%601%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L266">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskPipeAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskPipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task___1___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync``2(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Int32,System.Boolean,System.Threading.CancellationToken)">TaskPipeAsync&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Func&lt;TIn, Task&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; TaskPipeAsync&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, Func&lt;TIn, Task&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, <span class="xref">System.Threading.Tasks.Task</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskPipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_Task___1___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskPipeAsync%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7B%60%601%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L149">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskPipeAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskPipeAsync__2_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_Task___1___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync``2(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Func{``0,System.Threading.Tasks.Task{``1}},System.Int32,System.Boolean,System.Threading.CancellationToken)">TaskPipeAsync&lt;TIn, TOut&gt;(ChannelReader&lt;TIn&gt;, Int32, Func&lt;TIn, Task&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; TaskPipeAsync&lt;TIn, TOut&gt;(this ChannelReader&lt;TIn&gt; source, int maxConcurrency, Func&lt;TIn, Task&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TIn&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TIn, <span class="xref">System.Threading.Tasks.Task</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TIn</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskPipeAsync__3_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task___2___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskPipeAsync%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7B%60%602%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L283">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskPipeAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskPipeAsync__3_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task___2___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync``3(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.Task{``2}},System.Int32,System.Boolean,System.Threading.CancellationToken)">TaskPipeAsync&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Task&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; TaskPipeAsync&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, Func&lt;TRead, Task&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskPipeAsync__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_Task___2___System_Int32_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskPipeAsync%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7B%60%602%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Pipe.cs/#L167">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskPipeAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskPipeAsync__3_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_Task___2___System_Int32_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskPipeAsync``3(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Func{``1,System.Threading.Tasks.Task{``2}},System.Int32,System.Boolean,System.Threading.CancellationToken)">TaskPipeAsync&lt;TWrite, TRead, TOut&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Func&lt;TRead, Task&lt;TOut&gt;&gt;, Int32, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads all entries and applies the values to the provided transform function before buffering the results into another channel for consumption.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TOut&gt; TaskPipeAsync&lt;TWrite, TRead, TOut&gt;(this Channel&lt;TWrite, TRead&gt; source, int maxConcurrency, Func&lt;TRead, Task&lt;TOut&gt;&gt; transform, int capacity = -1, bool singleReader = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&lt;TOut&gt;&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function to apply the source entries before passing on to the output.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The width of the pipe: how many entries to buffer while waiting to be read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TOut&gt;</td>
        <td><p>The channel reader containing the output.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The type being accepted by the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The type contained by the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TOut</span></td>
        <td><p>The outgoing type from the resultant channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L488">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.Task},System.Boolean,System.Threading.CancellationToken)">TaskReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, Task&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, Task&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L504">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Func___0_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Func{``0,System.Threading.Tasks.Task},System.Threading.CancellationToken,System.Boolean)">TaskReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Func&lt;T, Task&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, Func&lt;T, Task&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_Task__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L520">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__1_System_Threading_Channels_ChannelReader___0__System_Threading_CancellationToken_System_Func___0_System_Threading_Tasks_Task__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``1(System.Threading.Channels.ChannelReader{``0},System.Threading.CancellationToken,System.Func{``0,System.Threading.Tasks.Task},System.Boolean)">TaskReadAllAsync&lt;T&gt;(ChannelReader&lt;T&gt;, CancellationToken, Func&lt;T, Task&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, CancellationToken cancellationToken, Func&lt;T, Task&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L388">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Int64,System.Threading.Tasks.Task},System.Boolean,System.Threading.CancellationToken)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Int64, Task&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, long, Task&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.Task%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L405">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Int64,System.Threading.Tasks.Task},System.Threading.CancellationToken,System.Boolean)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Int64, Task&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, long, Task&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L538">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.Task},System.Boolean,System.Threading.CancellationToken)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Task&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, Task&gt; receiver, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7D%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L555">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Func___1_System_Threading_Tasks_Task__System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Func{``1,System.Threading.Tasks.Task},System.Threading.CancellationToken,System.Boolean)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, Task&gt;, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, Func&lt;TRead, Task&gt; receiver, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Int64%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L422">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Int64_System_Threading_Tasks_Task__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Int64,System.Threading.Tasks.Task},System.Boolean)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, Int64, Task&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, long, Task&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Int64</span>, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_Task__System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Threading.CancellationToken%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L572">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllAsync__2_System_Threading_Channels_Channel___0___1__System_Threading_CancellationToken_System_Func___1_System_Threading_Tasks_Task__System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllAsync``2(System.Threading.Channels.Channel{``0,``1},System.Threading.CancellationToken,System.Func{``1,System.Threading.Tasks.Task},System.Boolean)">TaskReadAllAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, CancellationToken, Func&lt;TRead, Task&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; TaskReadAllAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, CancellationToken cancellationToken, Func&lt;TRead, Task&gt; receiver, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before reading.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>The count of items read after the reader has completed.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_Task__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Int32%2CSystem.Func%7B%60%600%2CSystem.Threading.Tasks.Task%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L77">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync__1_System_Threading_Channels_ChannelReader___0__System_Int32_System_Func___0_System_Threading_Tasks_Task__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync``1(System.Threading.Channels.ChannelReader{``0},System.Int32,System.Func{``0,System.Threading.Tasks.Task},System.Threading.CancellationToken)">TaskReadAllConcurrentlyAsync&lt;T&gt;(ChannelReader&lt;T&gt;, Int32, Func&lt;T, Task&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; TaskReadAllConcurrentlyAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader, int maxConcurrency, Func&lt;T, Task&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_Task__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync%60%602(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Int32%2CSystem.Func%7B%60%601%2CSystem.Threading.Tasks.Task%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.ReadConcurrently.cs/#L131">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_TaskReadAllConcurrentlyAsync__2_System_Threading_Channels_Channel___0___1__System_Int32_System_Func___1_System_Threading_Tasks_Task__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.TaskReadAllConcurrentlyAsync``2(System.Threading.Channels.Channel{``0,``1},System.Int32,System.Func{``1,System.Threading.Tasks.Task},System.Threading.CancellationToken)">TaskReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(Channel&lt;TWrite, TRead&gt;, Int32, Func&lt;TRead, Task&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Reads items from the channel and passes them to the receiver.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; TaskReadAllConcurrentlyAsync&lt;TWrite, TRead&gt;(this Channel&lt;TWrite, TRead&gt; channel, int maxConcurrency, Func&lt;TRead, Task&gt; receiver, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">channel</span></td>
        <td><p>The channel to read from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, <span class="xref">System.Threading.Tasks.Task</span>&gt;</td>
        <td><span class="parametername">receiver</span></td>
        <td><p>The async receiver function.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task that completes when no more reading is to be done.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>The item type of the writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>The item type of the reader.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel_System_IO_TextReader_System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel(System.IO.TextReader%2CSystem.Int32%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L153">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel_System_IO_TextReader_System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannel(System.IO.TextReader,System.Int32,System.Boolean,System.Boolean,System.Threading.CancellationToken)">ToChannel(TextReader, Int32, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all lines from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;string&gt; ToChannel(this TextReader source, int capacity = -1, bool singleReader = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel_System_IO_TextReader_System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel(System.IO.TextReader%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L169">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel_System_IO_TextReader_System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ToChannel(System.IO.TextReader,System.Int32,System.Boolean,System.Threading.CancellationToken,System.Boolean)">ToChannel(TextReader, Int32, Boolean, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Writes all lines from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;string&gt; ToChannel(this TextReader source, int capacity, bool singleReader, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L237">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Int32,System.Boolean,System.Boolean,System.Threading.CancellationToken)">ToChannel&lt;T&gt;(IAsyncEnumerable&lt;T&gt;, Int32, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IAsyncEnumerable&lt;T&gt; source, int capacity = -1, bool singleReader = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L270">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Int32,System.Boolean,System.Threading.CancellationToken,System.Boolean)">ToChannel&lt;T&gt;(IAsyncEnumerable&lt;T&gt;, Int32, Boolean, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IAsyncEnumerable&lt;T&gt; source, int capacity, bool singleReader, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Threading_Channels_ChannelOptions_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Threading.Channels.ChannelOptions%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L253">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IAsyncEnumerable___0__System_Threading_Channels_ChannelOptions_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.Channels.ChannelOptions,System.Boolean,System.Threading.CancellationToken)">ToChannel&lt;T&gt;(IAsyncEnumerable&lt;T&gt;, ChannelOptions, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IAsyncEnumerable&lt;T&gt; source, ChannelOptions channelOptions, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelOptions</span></td>
        <td><span class="parametername">channelOptions</span></td>
        <td><p>The options for configuring the new channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L202">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Int32_System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IEnumerable{``0},System.Int32,System.Boolean,System.Boolean,System.Threading.CancellationToken)">ToChannel&lt;T&gt;(IEnumerable&lt;T&gt;, Int32, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IEnumerable&lt;T&gt; source, int capacity = -1, bool singleReader = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Threading.CancellationToken%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L219">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Int32_System_Boolean_System_Threading_CancellationToken_System_Boolean_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IEnumerable{``0},System.Int32,System.Boolean,System.Threading.CancellationToken,System.Boolean)">ToChannel&lt;T&gt;(IEnumerable&lt;T&gt;, Int32, Boolean, CancellationToken, Boolean)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IEnumerable&lt;T&gt; source, int capacity, bool singleReader, CancellationToken cancellationToken, bool deferredExecution = false)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Threading_Channels_ChannelOptions_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannel%60%601(System.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Threading.Channels.ChannelOptions%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L185">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannel_" data-uid="Open.ChannelExtensions.Extensions.ToChannel*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannel__1_System_Collections_Generic_IEnumerable___0__System_Threading_Channels_ChannelOptions_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannel``1(System.Collections.Generic.IEnumerable{``0},System.Threading.Channels.ChannelOptions,System.Boolean,System.Threading.CancellationToken)">ToChannel&lt;T&gt;(IEnumerable&lt;T&gt;, ChannelOptions, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannel&lt;T&gt;(this IEnumerable&lt;T&gt; source, ChannelOptions channelOptions, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelOptions</span></td>
        <td><span class="parametername">channelOptions</span></td>
        <td><p>The options for configuring the new channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Func___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L351">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Func___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Func{``0}},System.Int32,System.Boolean,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;Func&lt;T&gt;&gt;, Int32, Boolean, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously executes all entries and writes their results to a channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;Func&lt;T&gt;&gt; source, int capacity = -1, bool singleReader = false, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Threading.Channels.ChannelOptions%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L335">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Func___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Func{``0}},System.Threading.Channels.ChannelOptions,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;Func&lt;T&gt;&gt;, ChannelOptions, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously executes all entries and writes their results to a channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;Func&lt;T&gt;&gt; source, ChannelOptions channelOptions, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelOptions</span></td>
        <td><span class="parametername">channelOptions</span></td>
        <td><p>The options for configuring the new channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L413">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Int32,System.Boolean,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;Task&lt;T&gt;&gt;, Int32, Boolean, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;Task&lt;T&gt;&gt; source, int capacity = -1, bool singleReader = false, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Threading.Channels.ChannelOptions%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L397">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Threading.Channels.ChannelOptions,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;Task&lt;T&gt;&gt;, ChannelOptions, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;Task&lt;T&gt;&gt; source, ChannelOptions channelOptions, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelOptions</span></td>
        <td><span class="parametername">channelOptions</span></td>
        <td><p>The options for configuring the new channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Int32%2CSystem.Boolean%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L382">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Int32_System_Boolean_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Int32,System.Boolean,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;ValueTask&lt;T&gt;&gt;, Int32, Boolean, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;ValueTask&lt;T&gt;&gt; source, int capacity = -1, bool singleReader = false, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">capacity</span></td>
        <td><p>The optional bounded capacity of the channel. Default is unbound.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">singleReader</span></td>
        <td><p>True will cause the resultant reader to optimize for the assumption that no concurrent read operations will occur.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToChannelAsync%60%601(System.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Threading.Channels.ChannelOptions%2CSystem.Int32%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L366">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToChannelAsync_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToChannelAsync__1_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Threading_Channels_ChannelOptions_System_Int32_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.ToChannelAsync``1(System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Threading.Channels.ChannelOptions,System.Int32,System.Threading.CancellationToken)">ToChannelAsync&lt;T&gt;(IEnumerable&lt;ValueTask&lt;T&gt;&gt;, ChannelOptions, Int32, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Writes all entries from the source to a channel and calls complete when finished.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;T&gt; ToChannelAsync&lt;T&gt;(this IEnumerable&lt;ValueTask&lt;T&gt;&gt; source, ChannelOptions channelOptions, int maxConcurrency = 1, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelOptions</span></td>
        <td><span class="parametername">channelOptions</span></td>
        <td><p>The options for configuring the new channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><p>The channel reader containing the results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_ToListAsync__1_System_Threading_Channels_ChannelReader___0__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.ToListAsync%60%601(System.Threading.Channels.ChannelReader%7B%60%600%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Read.cs/#L949">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_ToListAsync_" data-uid="Open.ChannelExtensions.Extensions.ToListAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_ToListAsync__1_System_Threading_Channels_ChannelReader___0__" data-uid="Open.ChannelExtensions.Extensions.ToListAsync``1(System.Threading.Channels.ChannelReader{``0})">ToListAsync&lt;T&gt;(ChannelReader&lt;T&gt;)</h4>
  <div class="markdown level1 summary"><p>Adds all items in the reader to a list and returns when the channel completes.
Note: this should only be used when the results of the channel are guaranteed to be limited.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;List&lt;T&gt;&gt; ToListAsync&lt;T&gt;(this ChannelReader&lt;T&gt; reader)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">reader</span></td>
        <td><p>The channel reader to read from.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Collections.Generic.List</span>&lt;T&gt;&gt;</td>
        <td><p>A list containing all the items from the completed channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The item type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Transform__2_System_Threading_Channels_Channel___0__System_Func___0___1__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Transform%60%602(System.Threading.Channels.Channel%7B%60%600%7D%2CSystem.Func%7B%60%600%2C%60%601%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Transform.cs/#L74">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Transform_" data-uid="Open.ChannelExtensions.Extensions.Transform*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Transform__2_System_Threading_Channels_Channel___0__System_Func___0___1__" data-uid="Open.ChannelExtensions.Extensions.Transform``2(System.Threading.Channels.Channel{``0},System.Func{``0,``1})">Transform&lt;T, TResult&gt;(Channel&lt;T&gt;, Func&lt;T, TResult&gt;)</h4>
  <div class="markdown level1 summary"><p>Transforms the</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static TransformChannel&lt;T, TResult&gt; Transform&lt;T, TResult&gt;(this Channel&lt;T&gt; source, Func&lt;T, TResult&gt; transform)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, TResult&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Open.ChannelExtensions.TransformChannel-2.html">TransformChannel</a>&lt;T, TResult&gt;</td>
        <td><p>A channel reader representing the tranformed results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>Specifies the type of data that may be written to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TResult</span></td>
        <td><p>Specifies the type of data that may be read from the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Transform__2_System_Threading_Channels_ChannelReader___0__System_Func___0___1__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Transform%60%602(System.Threading.Channels.ChannelReader%7B%60%600%7D%2CSystem.Func%7B%60%600%2C%60%601%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Transform.cs/#L51">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Transform_" data-uid="Open.ChannelExtensions.Extensions.Transform*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Transform__2_System_Threading_Channels_ChannelReader___0__System_Func___0___1__" data-uid="Open.ChannelExtensions.Extensions.Transform``2(System.Threading.Channels.ChannelReader{``0},System.Func{``0,``1})">Transform&lt;T, TResult&gt;(ChannelReader&lt;T&gt;, Func&lt;T, TResult&gt;)</h4>
  <div class="markdown level1 summary"><p>Transforms the</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ChannelReader&lt;TResult&gt; Transform&lt;T, TResult&gt;(this ChannelReader&lt;T&gt; source, Func&lt;T, TResult&gt; transform)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;T, TResult&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelReader</span>&lt;TResult&gt;</td>
        <td><p>A channel reader representing the tranformed results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The output type of the provided source reader and input type of the transform.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TResult</span></td>
        <td><p>The output type of the transform.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_Transform__3_System_Threading_Channels_Channel___0___1__System_Func___1___2__.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.Transform%60%603(System.Threading.Channels.Channel%7B%60%600%2C%60%601%7D%2CSystem.Func%7B%60%601%2C%60%602%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Transform.cs/#L63">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_Transform_" data-uid="Open.ChannelExtensions.Extensions.Transform*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_Transform__3_System_Threading_Channels_Channel___0___1__System_Func___1___2__" data-uid="Open.ChannelExtensions.Extensions.Transform``3(System.Threading.Channels.Channel{``0,``1},System.Func{``1,``2})">Transform&lt;TWrite, TRead, TResult&gt;(Channel&lt;TWrite, TRead&gt;, Func&lt;TRead, TResult&gt;)</h4>
  <div class="markdown level1 summary"><p>Transforms the</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static TransformChannel&lt;TWrite, TRead, TResult&gt; Transform&lt;TWrite, TRead, TResult&gt;(this Channel&lt;TWrite, TRead&gt; source, Func&lt;TRead, TResult&gt; transform)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.Channel</span>&lt;TWrite, TRead&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source channel reader.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Func</span>&lt;TRead, TResult&gt;</td>
        <td><span class="parametername">transform</span></td>
        <td><p>The transform function.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Open.ChannelExtensions.TransformChannel-3.html">TransformChannel</a>&lt;TWrite, TRead, TResult&gt;</td>
        <td><p>A channel reader representing the tranformed results.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TWrite</span></td>
        <td><p>Specifies the type of data that may be written to the channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TRead</span></td>
        <td><p>Specifies the type of data read from the source channel.</p>
</td>
      </tr>
      <tr>
        <td><span class="parametername">TResult</span></td>
        <td><p>Specifies the type of data that may be read from the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L113">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Boolean,System.Threading.CancellationToken)">WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Waits for opportunity to write to a channel and throws a ChannelClosedException if the channel is closed.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; writer, bool deferredExecution, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">writer</span></td>
        <td><p>The channel writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before continuing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type being written to the channel</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_String_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.String%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L83">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_String_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync``1(System.Threading.Channels.ChannelWriter{``0},System.String,System.Boolean,System.Threading.CancellationToken)">WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, String, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Waits for opportunity to write to a channel and throws a ChannelClosedException if the channel is closed.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; writer, string ifClosedMessage, bool deferredExecution, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">writer</span></td>
        <td><p>The channel writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">ifClosedMessage</span></td>
        <td><p>The message to include with the ChannelClosedException if thrown.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before continuing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type being written to the channel</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_String_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.String%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L56">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_String_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync``1(System.Threading.Channels.ChannelWriter{``0},System.String,System.Threading.CancellationToken)">WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, String, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Waits for opportunity to write to a channel and throws a ChannelClosedException if the channel is closed.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; writer, string ifClosedMessage = null, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">writer</span></td>
        <td><p>The channel writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">ifClosedMessage</span></td>
        <td><p>The message to include with the ChannelClosedException if thrown.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type being written to the channel</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L103">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WaitToWriteAndThrowIfClosedAsync__1_System_Threading_Channels_ChannelWriter___0__System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WaitToWriteAndThrowIfClosedAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Threading.CancellationToken)">WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Waits for opportunity to write to a channel and throws a ChannelClosedException if the channel is closed.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask WaitToWriteAndThrowIfClosedAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; writer, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">writer</span></td>
        <td><p>The channel writer.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The type being written to the channel</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAll__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAll%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L161">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAll_" data-uid="Open.ChannelExtensions.Extensions.WriteAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAll__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAll``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAll&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;T&gt;, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAll&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;T&gt; source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAll__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAll%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L181">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAll_" data-uid="Open.ChannelExtensions.Extensions.WriteAll*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAll__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAll``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean,System.Threading.CancellationToken)">WriteAll&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;T&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAll&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;T&gt; source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L271">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IAsyncEnumerable&lt;T&gt;, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IAsyncEnumerable&lt;T&gt; source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IAsyncEnumerable%7B%60%600%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L321">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IAsyncEnumerable___0__System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IAsyncEnumerable&lt;T&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IAsyncEnumerable&lt;T&gt; source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IAsyncEnumerable</span>&lt;T&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L126">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Func{``0}},System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;Func&lt;T&gt;&gt;, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously executes all entries and writes their results to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;Func&lt;T&gt;&gt; source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L146">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Func{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;Func&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously executes all entries and writes their results to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;Func&lt;T&gt;&gt; source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L91">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;Task&lt;T&gt;&gt;, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;Task&lt;T&gt;&gt; source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L111">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;Task&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;Task&lt;T&gt;&gt; source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L27">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;ValueTask&lt;T&gt;&gt;, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;ValueTask&lt;T&gt;&gt; source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L76">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllAsync__1_System_Threading_Channels_ChannelWriter___0__System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, IEnumerable&lt;ValueTask&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, IEnumerable&lt;ValueTask&lt;T&gt;&gt; source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>The cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Func%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.WriteConcurrently.cs/#L131">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Func___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Int32,System.Collections.Generic.IEnumerable{System.Func{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllConcurrentlyAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, Int32, IEnumerable&lt;Func&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously executes all entries and writes their results to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; WriteAllConcurrentlyAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, int maxConcurrency, IEnumerable&lt;Func&lt;T&gt;&gt; source, bool complete = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Func</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.Task%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.WriteConcurrently.cs/#L116">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_Task___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Int32,System.Collections.Generic.IEnumerable{System.Threading.Tasks.Task{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllConcurrentlyAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, Int32, IEnumerable&lt;Task&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; WriteAllConcurrentlyAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, int maxConcurrency, IEnumerable&lt;Task&lt;T&gt;&gt; source, bool complete = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.Task</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync%60%601(System.Threading.Channels.ChannelWriter%7B%60%600%7D%2CSystem.Int32%2CSystem.Collections.Generic.IEnumerable%7BSystem.Threading.Tasks.ValueTask%7B%60%600%7D%7D%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.WriteConcurrently.cs/#L24">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllConcurrentlyAsync__1_System_Threading_Channels_ChannelWriter___0__System_Int32_System_Collections_Generic_IEnumerable_System_Threading_Tasks_ValueTask___0___System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllConcurrentlyAsync``1(System.Threading.Channels.ChannelWriter{``0},System.Int32,System.Collections.Generic.IEnumerable{System.Threading.Tasks.ValueTask{``0}},System.Boolean,System.Threading.CancellationToken)">WriteAllConcurrentlyAsync&lt;T&gt;(ChannelWriter&lt;T&gt;, Int32, IEnumerable&lt;ValueTask&lt;T&gt;&gt;, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Asynchronously writes all entries from the source to the channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Task&lt;long&gt; WriteAllConcurrentlyAsync&lt;T&gt;(this ChannelWriter&lt;T&gt; target, int maxConcurrency, IEnumerable&lt;ValueTask&lt;T&gt;&gt; source, bool complete = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;T&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td><span class="parametername">maxConcurrency</span></td>
        <td><p>The maximum number of concurrent operations.  Greater than 1 may likely cause results to be out of order.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Threading.Tasks.ValueTask</span>&lt;T&gt;&gt;</td>
        <td><span class="parametername">source</span></td>
        <td><p>The asynchronous source data to use.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.Task</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">T</span></td>
        <td><p>The input type of the channel.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllLines_System_Threading_Channels_ChannelWriter_System_String__System_IO_TextReader_System_Boolean_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllLines(System.Threading.Channels.ChannelWriter%7BSystem.String%7D%2CSystem.IO.TextReader%2CSystem.Boolean%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L195">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllLines_" data-uid="Open.ChannelExtensions.Extensions.WriteAllLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllLines_System_Threading_Channels_ChannelWriter_System_String__System_IO_TextReader_System_Boolean_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllLines(System.Threading.Channels.ChannelWriter{System.String},System.IO.TextReader,System.Boolean,System.Boolean,System.Threading.CancellationToken)">WriteAllLines(ChannelWriter&lt;String&gt;, TextReader, Boolean, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Consumes all lines from a TextReader and writes them to a channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllLines(this ChannelWriter&lt;string&gt; target, TextReader source, bool complete = false, bool deferredExecution = false, CancellationToken cancellationToken = default(CancellationToken))</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The text reader to consume from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">deferredExecution</span></td>
        <td><p>If true, calls await Task.Yield() before writing.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions_WriteAllLines_System_Threading_Channels_ChannelWriter_System_String__System_IO_TextReader_System_Boolean_System_Threading_CancellationToken_.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions.WriteAllLines(System.Threading.Channels.ChannelWriter%7BSystem.String%7D%2CSystem.IO.TextReader%2CSystem.Boolean%2CSystem.Threading.CancellationToken)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions.Write.cs/#L255">View Source</a>
  </span>
  <a id="Open_ChannelExtensions_Extensions_WriteAllLines_" data-uid="Open.ChannelExtensions.Extensions.WriteAllLines*"></a>
  <h4 id="Open_ChannelExtensions_Extensions_WriteAllLines_System_Threading_Channels_ChannelWriter_System_String__System_IO_TextReader_System_Boolean_System_Threading_CancellationToken_" data-uid="Open.ChannelExtensions.Extensions.WriteAllLines(System.Threading.Channels.ChannelWriter{System.String},System.IO.TextReader,System.Boolean,System.Threading.CancellationToken)">WriteAllLines(ChannelWriter&lt;String&gt;, TextReader, Boolean, CancellationToken)</h4>
  <div class="markdown level1 summary"><p>Consumes all lines from a TextReader and writes them to a channel.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ValueTask&lt;long&gt; WriteAllLines(this ChannelWriter&lt;string&gt; target, TextReader source, bool complete, CancellationToken cancellationToken)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Channels.ChannelWriter</span>&lt;<span class="xref">System.String</span>&gt;</td>
        <td><span class="parametername">target</span></td>
        <td><p>The channel to write to.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.TextReader</span></td>
        <td><span class="parametername">source</span></td>
        <td><p>The text reader to consume from.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">complete</span></td>
        <td><p>If true, will call .Complete() if all the results have successfully been written (or the source is emtpy).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Threading.CancellationToken</span></td>
        <td><span class="parametername">cancellationToken</span></td>
        <td><p>An optional cancellation token.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Threading.Tasks.ValueTask</span>&lt;<span class="xref">System.Int64</span>&gt;</td>
        <td><p>A task containing the count of items written that completes when all the data has been written to the channel writer.
The count should be ignored if the number of iterations could exceed the max value of long.</p>
</td>
      </tr>
    </tbody>
  </table>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <div class="contribution">
                <ul class="nav">
                  <li>
                    <a href="https://github.com/electricessence/Open.ChannelExtensions/new/master/apiSpec/new?filename=Open_ChannelExtensions_Extensions.md&amp;value=---%0Auid%3A%20Open.ChannelExtensions.Extensions%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" class="contribution-link">Improve this Doc</a>
                  </li>
                  <li>
                    <a href="https://github.com/electricessence/Open.ChannelExtensions/blob/master/Open.ChannelExtensions/Extensions._.cs/#L15" class="contribution-link">View Source</a>
                  </li>
                </ul>
              </div>
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            
            <span>Generated by <strong>DocFX</strong></span>
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="styles/docfx.js"></script>
    <script type="text/javascript" src="styles/main.js"></script>
  </body>
</html>
